import {defineConfig} from 'vite'
import vue from '@vitejs/plugin-vue'
// unocss
import UnoCSS from 'unocss/vite'
// 自动导入 方法/组件
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import {NaiveUiResolver} from 'unplugin-vue-components/resolvers'

// https://vitejs.dev/config/
export default defineConfig({
   // 自定义前缀
   envPrefix: "APP_",
   // 插件
   plugins: [
      // unocss
      UnoCSS(),
      // vue
      vue({
         script: {
            defineModel: true,
         },
      }),
      // 自动导入 方法
      AutoImport({
         resolvers: [NaiveUiResolver()],
         // 自动导入官方包
         imports: [
            "vue",
            "vue-router",
            "vue-i18n",
            "pinia",
            {
               'naive-ui': [
                  'useDialog',
                  'useMessage',
                  'useNotification',
                  'useLoadingBar'
               ]
            }
         ],
         // 自动导入本地包
         dirs: [
            "src/config/**",     // 本地配置
            "src/utils/**",      // 本地工具
            "src/stores/**",     // 本地存储
            "src/http/apis/**",  // 本地接口
         ],
         // 文件位置
         dts: "auto-imports.d.ts"
      }),
      // 自动导入 组件
      Components({
         resolvers: [NaiveUiResolver()],
         // 文件位置
         dts: "auto-components.d.ts"
      })
   ],
   // 服务
   server: {
      port: 8080,
      open: true,
      // 解决本地代理跨域请求
      proxy: {
         '/api': {
            target: 'https://raw.onmicrosoft.cn',
            changeOrigin: true,
            rewrite: (path) => path.replace(/^\/api/, '')
         },
      }
   },
   resolve: {
      alias: {
         '@': '/src',
         'vue-i18n': 'vue-i18n/dist/vue-i18n.cjs.js'
      }
   },
})
